#define _CRT_SECURE_NO_WARNINGS 1

#include <vector>
#include <list>
#include <stack>
#include <queue>
#include "stack.hpp"
#include "queue.hpp"

void test_stack()
{
	MyStack::stack<int, vector<int>> st1;
	MyStack::stack<int, list<int>> st2;
	stack<int> st3;

	const int i = 5;
	int j = i;

	st1.push(1);
	st1.push(2);
	st1.push(3);
	st1.push(4);

	st2.push(1);
	st2.push(2);
	st2.push(3);
	st2.push(4);
}

void test_queue()
{
	MyQueue::queue<int, vector<int>> q1;
	MyQueue::queue<int, list<int>> q2;
	stack<int> st3;

	const int i = 5;
	int j = i;

	q1.push(1);
	q1.push(2);
	q1.push(3);
	q1.push(4);


	q2.push(1);
	q2.push(2);
	q2.push(3);
	q2.push(4);
}

void test_priority_queue()
{
	priority_queue<int> pq;
	pq.push(1);
	pq.push(6);
	pq.push(0);
	pq.push(9);
	pq.push(11);
	pq.push(7);

	while (!(pq.empty()))
	{
		cout << pq.top() << endl;
		pq.pop();
	}
}

int main()
{
	int i = 0;
	int j = 1;
	int k = 2;

	int& a = j;
	int& b = i;

	a = k;
	b = j;
	test_stack();
	test_queue();
	test_priority_queue();
	return 0;
}